// pages/player/player.js
let musiclist = [];
// 正在播放歌曲音乐的 index
let nowPlayingIndex = 0;
// 获取全局唯一的背景音频管理器
const backgroundAudioManager = wx.getBackgroundAudioManager();
const app = getApp();

Page({

  /**
   * 页面的初始数据
   */
  data: {
    playerId: -1,
    picUrl: "",
    isPlaying: true, // 播放状态
    lyric: "", // 歌词
    currentTime: 0, // 当前播放时间(没有用上，只做对比使用)
    isSame: false,  // 表示是否为同一首歌
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // console.log(options);
    let playerId = options.musicId;
    nowPlayingIndex = options.index;
    this.setData({
      playerId
    });
    this._getMusicList();
    this._loadMusicDetail(playerId);
  },
  // 获取本地音乐列表
  _getMusicList() {
    musiclist = wx.getStorageSync("musiclist");
  },
  // 加载音乐详情
  _loadMusicDetail(musicId) {
    if (musicId == app.getPlayMusicId()) {
      this.setData({
        isSame: true
      });
    } else {
      this.setData({
        isSame: false
      });
    }

    if (!this.data.isSame) { // 不是同一首歌
      backgroundAudioManager.stop();
    }    
    let music = musiclist[nowPlayingIndex];
    // 设置标题名称
    wx.setNavigationBarTitle({
      title: music.name
    });

    this.setData({
      picUrl: music.al.picUrl,
      isPlaying: false, // false 表示不播放
      isLyricShow: false, // 表示当前歌词显示
    });

    // console.log(musicId, typeof musicId);
    // 设置播放歌曲id
    app.setPlayMusicId(musicId);

    wx.showLoading({
      title: '歌曲加载中',
    });

    // 调用去函数获取音乐
    wx.cloud.callFunction({
      name: "music",
      data: {
        musicId,
        $url: "musicUrl"
      }
    }).then((res) => {
      // console.log(JSON.parse(res.result));
      let result = JSON.parse(res.result);
      if (result.data[0].url == null) {
        wx.showToast({
          title: "无权限播放",
        });
        return;
      }
      if (!this.data.isSame) {
        backgroundAudioManager.src = result.data[0].url;
        backgroundAudioManager.title = music.name;
        backgroundAudioManager.coverImgUrl = music.al.picUrl;
        backgroundAudioManager.singer = music.ar[0].name;
        backgroundAudioManager.epname = music.al.name;

        // 保存播放历史
        this.savePlayHistory();
      }

      this.setData({
        isPlaying: true
      });

      wx.hideLoading();

      // 加载歌词
      wx.cloud.callFunction({
        name: "music",
        data: {
          musicId,
          $url: "lyric",
        }
      }).then((res) => {
        // console.log(res);
        let lyric = "暂无歌词";
        const lrc =  JSON.parse(res.result).lrc;
        if (lrc) {
          lyric = lrc.lyric;
        }
        this.setData({
          lyric
        });
      })
    });
  },
  // 歌词联动把当前时间从子组件中取出赋值与另一个子组件（获取当前时间）
  timeUpdate(e) {
    // console.log(e);
    this.selectComponent(".lyric").update(e.detail.currentTime);
    const currentTime = e.detail.currentTime;
    this.setData({
      currentTime
    });
  },
  // 切换歌词
  onChangeLryicShow() {
    this.setData({
      isLyricShow: !this.data.isLyricShow
    });
  },
  // 切换播放模式
  togglePlaying() {
    if (this.data.isPlaying) {
      backgroundAudioManager.pause();
    } else {
      backgroundAudioManager.play();
    }
    this.setData({
      isPlaying: !this.data.isPlaying
    });
  },
  // 上一首
  onPrev() {
      nowPlayingIndex--;
    if (nowPlayingIndex < 0) {
      nowPlayingIndex = musiclist.length - 1;
    }
      let playerId = musiclist[nowPlayingIndex].id;
      this._loadMusicDetail(playerId);

  },
  // 下一首
  onNext() {
      nowPlayingIndex++;
    if (nowPlayingIndex == musiclist.length) {
      nowPlayingIndex = 0;
    }
      let playerId = musiclist[nowPlayingIndex].id;
      this._loadMusicDetail(playerId);
  },
  // 音乐播放事件
  onPlay() {
    // backgroundAudioManager.play();
    this.setData({
      isPlaying: true
    });
  },
  // 音乐暂停事件
  onPause() {
    // backgroundAudioManager.pause();
    this.setData({
      isPlaying: false
    });
  },
  /**
   * 保存播放历史
   */
  savePlayHistory() {
    // 当前正在播放的歌曲
    const music = musiclist[nowPlayingIndex];
    const openid = app.globalData.openid;
    const history = wx.getStorageSync(openid);
    let bHave = false;
    for (let i = 0, len = history.length; i < len; i++) {
      if (history[i].id == music.id) {
        bHave = true;
        break;
      }
    }

    if (!bHave) {
      history.unshift(music);
      wx.setStorageSync(openid, history);
    }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})